// 作用域链
// 每个执行上下文中都有outer，他(..指向 定义的时候所在的执行上下文..)，outer将不同的执行上下文串联起来，形成作用域链


// 闭包
// 闭包是怎么回收的
// 通常，如果引用闭包的函数是一个全局变量，那么闭包会一直存在直到页面关闭；但如果这个闭包以后不再使用的话，就会造成内存泄漏。
// 如果引用闭包的函数是个局部变量，等函数销毁后，在下次 JavaScript 引擎执行垃圾回收时，判断闭包这块内容如果已经不再被使用了，那么 JavaScript 引擎的垃圾回收器就会回收这块内存。
// 使用闭包的时候，你要尽量注意一个原则：如果该闭包会一直使用，那么它可以作为全局变量而存在；但如果使用频率不高，而且占用内存又比较大的话，那就尽量让它成为一个局部变量。
// 使用频率不高  占用内存又大   尽量让他成为一个局部变量




